/**
 * 旭鸣miniui应用工具包命名空间
 * @return
 */
function MiniuiTools(){
	
};

MiniuiTools.instance	= MiniuiTools;

/**
 * 遍历树，查找某节点并返回 当指定一个无法查找到的节点时，该函数将成为一个遍历函数，并可以指定遍历节点时需要调用的函数 callfun
 * @param value 指定值
 * @param data 树数据
 * @param callfun 回调函数
 * @param key 关键字
 * @param depth 遍历深度
 * @return
 */
MiniuiTools.findTreeNode = function(value, data, callfun, key, depth) {
	var depth = depth ? depth : 0;
	var fun = null;
	if (value == '0') return fun;
	if (data) {
		for (var i = 0; i < data.length; i++) {
			if (callfun) callfun(data[i]);

			var ov = key ? data[i][key] : data[i].id;
			if (value == ov) {
				fun = data[i];
				break;
			}
			if (data[i].children) {
				fun = MiniuiTools.findTreeNode(value, data[i].children, callfun, key, depth + 1);
				if (fun && fun.id != '0') break;
			}
		}
	}
	return fun;
};

/**
 * 本地验证用户是否具有权限,成功返回功能节点，失败返回空（非安全）
 * @param funCode 功能编码
 * @return
 */
MiniuiTools.hasPurview = function(funCode) {
	var funNode = MiniuiTools.findTreeNode(funCode, parent.ClientData.userFunNodeData, null, "funCode");
	return funNode;
};

/**
 * 传入需要判断的功能的系统编码数组，返回是否具有该功能的布尔值数组
 */
MiniuiTools.isHasPurview = function(systemCodeArray){
	var isHasp = new Array();
	for ( var i = 0; i < systemCodeArray.length; i++) {
		isHasp.push(MiniuiTools.hasPurview(systemCodeArray[i]));
	}
	return isHasp;
};

/**
 * 加载用户所具有功能节点下的功能按钮
 * 需要传入一个mini界面中的 meau 的id
 */
MiniuiTools.loadFunMeau = function(funMeauId){
	var funs	= parent.ClientData.userFunNodeData;
	var funItems = [];
	var funId = parent.MainHandler.leftFunId;
	var funMeau = mini.get(funMeauId);

	var pfs = MiniuiTools.findTreeNode(funId,parent.ClientData.userFunNodeData, null, "funId", 1);
	if (pfs && pfs.children) {
		for ( var i = 0; i < pfs.children.length; i++) {
			var obj = pfs.children[i];
			var cp = {
				text : obj.name,
				iconCls : obj.funIcon
			};
			var cp = $.extend(cp, obj); // 复制节点
			if (cp.funType >= 2)
				cp.children = null; 
			funItems.push(cp);
		}
	}
	funMeau.setItems(funItems);
};

/**
 * 查找并创建指定的Mini组件
 * @param {} oType 组件类型
 * @param {} oId   组件id
 * @param {} oPanel 组件面板
 * @return {}
 */
MiniuiTools.findAndCreate = function(oType,oId,oPanel){
	var obj = mini.get(oId);
	if(obj != null){
		return obj;
	}else{
		obj = new mini[oType]();
		return obj.set(oPanel);
	}
};

/**
 * 创建新的Mini组件
 * @param {} oType 组件类型
 * @param {} oId 组件id
 * @param {} oPanel 组件面板
 * @return {}
 */
MiniuiTools.createNewObj = function(oType,oId,oPanel){
	var obj = mini.get(oId);
	if(obj != null){
		obj.destroy();
		obj	= null;
	}

	obj = new mini[oType]();
	return obj.set(oPanel);
	
};

/**
 * mini消息框
 * @param {} title
 * @param {} message
 * @param {} callback
 */
MiniuiTools.miniInfo = function(title, message, callback){
	mini.showMessageBox({
		width: 250,
        title: title,
        message: message,
        buttons: ["ok"],
        iconCls: "mini-messagebox-info",
        callback: callback
    });
}     

/**
 * mini警告框
 * @param {} title
 * @param {} message
 * @param {} callback
 */
MiniuiTools.miniWarning = function(title, message, callback){
	mini.showMessageBox({
		width: 250,
        title: title,
        message: message,
        buttons: ["ok"],
        iconCls: "mini-messagebox-warning",
        callback: callback
    });
}  

/**
 * mini问题提示框
 * @param {} title
 * @param {} message
 * @param {} callback
 */
MiniuiTools.miniQuestion = function(title, message, callback){
	mini.showMessageBox({
		width: 250,
        title: title,
        message: message,
        buttons: ["ok", "cancel"],
        iconCls: "mini-messagebox-Question",
        callback: callback
    });
}  

/**
 * mini错误提示框
 * @param {} title
 * @param {} message
 * @param {} callback
 */
MiniuiTools.miniError = function(title, message, callback){
	mini.showMessageBox({
		width: 250,
        title: title,
        message: message,
        buttons: ["ok"],
        iconCls: "mini-messagebox-error",
        callback: callback
    });
}  

/**
 * mini弹出框，可自定义弹出框宽、高
 * @param {} title 
 * @param {} message
 * @param {} width
 * @param {} height
 * @param {} callback
 */
MiniuiTools.miniMsgBox = function(title, message, width, height, callback){
	width = (width == null || width == "") ? 250 : width;
	height = (height == null || height == "") ? 120 : height;
	
	mini.showMessageBox({
        width: width,
        height: height,
        title: title,
        message: message,
        buttons: ["ok", "cancel"],
        iconCls: "mini-messagebox-info",
        callback: callback
    });
}  

// mini加载提示框id，根据id可隐藏对应的加载提示框
MiniuiTools.loadIngId = null;

/**
 * mini加载提示框，可自定义标题和内容
 * @param {} title
 * @param {} content
 */
MiniuiTools.miniLoading = function(title, content){
	if(title != null && title != "" && content != null && content != ""){
		MiniuiTools.loadIngId = mini.loading(content, title);
	}else{
		MiniuiTools.loadIngId = mini.loading("文件上传中，请稍后...", "上传文件...");
	}
}

/**
 * mini隐藏加载提示框
 */
MiniuiTools.miniHideLoading = function(){
	if(MiniuiTools.loadIngId != null){
		mini.hideMessageBox(MiniuiTools.loadIngId);
	}
}